package Stream02;

import java.util.ArrayList;
/*
Stream流的中间操作
   Stream<T> sorted ():返回由此流的元素组成的流，根据自然顺序排序
   Stream<T>sorted (Comparator comparator):返回由该流的元素组成的流，根据提供的Comparator进行排序
       Comparator接口中的方法   int compare(T O1,T 02)
 */
public class StreamDemo05 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();

        list.add("jianghengxing");
        list.add("zhangwuji");
        list.add("wangzuxian");
        list.add("haowanjie");
        list.add("dengjihao");
        list.add("houjiachao");

        //需求一：按照字母顺序把数据在控制台输出
//        list.stream().sorted().forEach(System.out::println);

        //需求二：按照字符串长度把数据在控制台输出
        //在Lambda表达式中运用比较器判断
//        list.stream().sorted((s1,s2)->s1.length()-s2.length()).forEach(System.out::println);//自然排序
        list.stream().sorted((s1,s2)->{
            int num=s1.length()-s2.length();
            int num2=num==0?s1.compareTo(s2):num;
            return num2;
        }).forEach(System.out::println);//指定比较器排序

    }
}
